/*
 * Projeto Casamento
 * 
 * Versao: 0.0.1
 * Autor: Cristiano Lima
 * Data: 01/11/2012
 * 
 * Copyright (C) 2012-2013
 */
package casamento.controle;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import casamento.Bean.LoginBean;
import casamento.DAO.LoginDAO;

/**
 * Classe que controla o acesso do usuário.
 * 
 * @author Cristiano Lima
 * 
 */
@ManagedBean(name = "loginMB")
@SessionScoped
public class LoginMB {

	LoginBean loginBean = new LoginBean();
	LoginDAO loginDAO = new LoginDAO();
	String isUsuarioAtivo;
	String verificaUsuario;
	
	public LoginMB() {
		loginBean = new LoginBean();
		isUsuarioAtivo = "true";
		verificaUsuario = "false";
		}

	
	/**
	 * método resposável por validar dados de login do usuário. 
	 * 
	 */
	public String validarLogin() throws ClassNotFoundException, SQLException {

		List<LoginBean> listaLogin = new ArrayList<LoginBean>();
		listaLogin = loginDAO.usuario();

		for (LoginBean user : listaLogin) {
			if (loginBean.getUsuario().equals(user.getUsuario())
					&& loginBean.getSenha().equals(user.getSenha())) {
				
				FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuario", user.getUsuario());
				FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("senha", user.getSenha());
				
				return "home.xhtml?faces-redirect=true";
			} else
				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage(FacesMessage.SEVERITY_ERROR,
								"Usuário ou Senha inválido.",
								"Usuário ou Senha inválido."));
			loginBean = new LoginBean();
			return "";

		}

		return "";
	}
	
	/**
	 * método resposável por alterar senha do usuário na TbLogin. 
	 * 
	 */
	public String alterarLogin() throws ClassNotFoundException, SQLException {
		List<LoginBean> lista = new ArrayList<LoginBean>();
		lista = loginDAO.usuario();

		if (!lista.isEmpty()) {
			for (LoginBean i : lista) {
				if (loginBean.getUsuario().equals(i.getUsuario())
						&& loginBean.getSenha().equals(i.getSenha())) {
					if (loginBean.getNovaSenha().equals(
							loginBean.getConfirmarSenha())) {
						i.setSenha(loginBean.getNovaSenha());
						loginDAO.alterarUsuario(i);

						String message = "Senha alterada com Sucesso. ";
						FacesContext.getCurrentInstance().addMessage(
								null,
								new FacesMessage(FacesMessage.SEVERITY_INFO,
										message, message));
					} else {
						String message = "Campo nova senha e Confirmação devem ser iguais. ";
						FacesContext.getCurrentInstance().addMessage(
								null,
								new FacesMessage(FacesMessage.SEVERITY_ERROR,
										message, message));
					}

				} else {
					String message = "Senha ou Usuário incorreto.";
					FacesContext.getCurrentInstance().addMessage(
							null,
							new FacesMessage(FacesMessage.SEVERITY_ERROR,
									message, message));
					return "";
				}

			}
		}
		return "";

	}
	
	/**
	 * método resposável por alterar dados do usuário na TbLogin. 
	 * 
	 */
	public String verificarUsuario() throws ClassNotFoundException, SQLException {
		
		List<LoginBean> listaUsuarios = loginDAO.usuario();
		
		for(LoginBean login : listaUsuarios){
			if(loginBean.getUsuario().equals(login.getUsuario()) &&
					loginBean.getSenha().equals(login.getSenha())){
					loginBean.setId(login.getId());
					verificaUsuario = "true";
					isUsuarioAtivo = "false";
			}else{
				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage(FacesMessage.SEVERITY_ERROR,
								"Usuário ou Senha inválido.",
								"Usuário ou Senha inválido."));
			return "";
			}
			
		}
		
		return "";
	}
		
	
	public void alterarUsuario(){
		
		loginBean.setUsuario(loginBean.getNovoUsuario());
		loginDAO.alterarUsuario(loginBean);
		
		FacesContext.getCurrentInstance().addMessage(
				null,
				new FacesMessage(FacesMessage.SEVERITY_INFO,
						"Usuário alterado com sucesso.",
						"Usuário alterado com sucesso."));
		isUsuarioAtivo = "true";
		verificaUsuario = "false";
		loginBean = new LoginBean();
	}
	
	/**
	 * método resposável por sair do sitema e encerrar sessão. 
	 * 
	 */
	public String sair() {
		loginBean = new LoginBean();
		
		 	FacesContext facesContext = FacesContext.getCurrentInstance();  
		    HttpSession session = (HttpSession) facesContext .getExternalContext().getSession(false);  
		    session.invalidate();  
		    return "sair";  
	}
	
	/**
	 * Getter para loginBean.
	 *
	 * @return loginBean
	 */
	public LoginBean getLoginBean() {
		return loginBean;
	}
	
	/**
	 * Setter para loginBean.
	 *
	 * @param loginBean loginBean
	 */
	public void setLoginBean(LoginBean loginBean) {
		this.loginBean = loginBean;
	}


	public String getIsUsuarioAtivo() {
		return isUsuarioAtivo;
	}


	public void setIsUsuarioAtivo(String isUsuarioAtivo) {
		this.isUsuarioAtivo = isUsuarioAtivo;
	}


	public String getVerificaUsuario() {
		return verificaUsuario;
	}


	public void setVerificaUsuario(String verificaUsuario) {
		this.verificaUsuario = verificaUsuario;
	}

	
}
